Phantom read
他のトランザクションがcommitしたINSERT/DELETEが見える
UPDATEは見えない。UPDATEが見えるのはFuzzy(Non repeatable) read
code:sql
BEGIN;
SELECT name FROM vtuber WHERE id = 1; -- 月ノ美兎
SELECT COUNT(*) FROM vtuber; -- 1
-- ここで別のトランザクションによってid=1のnameがUPDATEされてcommitされる
SELECT name FROM vtuber WHERE id = 1; -- 月ノ美兎
-- ここで別のトランザクションによってid=2のvtuberがINSERTされる
SELECT COUNT(*) FROM vtuber; -- 2
失敗から学ぶRDBの正しい歩き方 p.188の図
MySQLのデフォルトはREPEATABLE READだが、next-key lockによってPhantom readが起きないようになっている